//
//  JBUnitGridView.h
//  JBCalendar
//
//  Created by YongbinZhang on 7/8/13.
//  Copyright (c) 2013 JustBen. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "JBUnitTileView.h"
#import "JBCalendarLogic.h"


typedef enum {
    UnitTypeMonth = 0,  //  月
    UnitTypeWeek = 1,   //  周
} UnitType;


@protocol JBUnitGridViewDelegate, JBUnitGridViewDataSource;
@interface JBUnitGridView : UIView

@property (nonatomic, assign) id <JBUnitGridViewDelegate> delegate;
@property (nonatomic, assign) id <JBUnitGridViewDataSource> dataSource;

//  该UnitGridView中所有的UnitTileViews的Width
@property (nonatomic, assign) NSInteger unitTileViewWidth;
//  该UnitGridView中所有的UnitTileViews的Height
@property (nonatomic, assign) NSInteger unitTileViewHeight;



//  月视图 or 周视图
@property (nonatomic, assign, readonly) UnitType unitType;

//  目前选中的时间
@property (nonatomic, strong) NSDate *selectedDate;

@property (nonatomic, strong) UIView *backgroundView;


/**************************************************************
 *@Description:初始化方法
 *@Params:
 *  frame:框架
 *  unitType:月视图／周视图
 *  selectedDate:初始的选择日期
 *@Return:JBUnitGridView对象
 **************************************************************/
- (id)initWithFrame:(CGRect)frame UnitType:(UnitType)unitType SelectedDate:(NSDate *)selectedDate;

/**************************************************************
 *@Description:重新加载数据以显示界面
 *@Params:nil
 *@Return:nil
 **************************************************************/
- (void)reloadData;

@end


@protocol JBUnitGridViewDelegate <NSObject>

/**************************************************************
 *@Description:触发unitTileView上的tap手势
 *@Params:
 *  unitGridView:unitTileView所在的unitGridView
 *  unitTileView:触发的手势所在的unitTileView
 *@Return:nil
 **************************************************************/
- (void)unitGridView:(JBUnitGridView *)unitGridView tappedOnUnitTileView:(JBUnitTileView *)unitTileView;

/**************************************************************
 *@Description:触发unitTileView上的doubleTap手势
 *@Params:
 *  unitGridView:unitTileView所在的unitGridView
 *  unitTileView:触发的手势所在的unitTileView
 *@Return:nil
 **************************************************************/
- (void)unitGridView:(JBUnitGridView *)unitGridView doubleTappedOnUnitTileView:(JBUnitTileView *)unitTileView;

/**************************************************************
 *@Description:触发unitTileView上的longPress手势
 *@Params:
 *  unitGridView:unitTileView所在的unitGridView
 *  unitTileView:触发的手势所在的unitTileView
 *@Return:nil
 **************************************************************/
- (void)unitGridView:(JBUnitGridView *)unitGridView longPressedOnUnitTileView:(JBUnitTileView *)unitTileView;

/**************************************************************
 *@Description:设置unitGridView中所有unitTileViews的状态切换时是否
        有动画效果
 *@Params:
 *  unitGridView:所有unitTileViews所在的unitGridView
 *@Return:是否有动画效果
 **************************************************************/
- (BOOL)shouldAnimatedWhenUnitTileViewsStatusChangedInUnitGridView:(JBUnitGridView *)unitGridView;

@end


@protocol JBUnitGridViewDataSource <NSObject>

/**************************************************************
 *@Description:获取unitTileView对应的时间范围内的事件的数量
 *@Params:
 *  unitGridView:unitTileView所在的unitGridView
 *  unitTileView:触发的手势所在的unitTileView
 *@Return:unitTileView对应的时间范围内的事件的数量
 **************************************************************/
- (NSInteger)unitGridView:(JBUnitGridView *)unitGridView eventCountOfUnitTileView:(JBUnitTileView *)unitTileView;


/**************************************************************
 *@Description:获取unitTileView对应的时间范围内的事件
 *@Params:
 *  unitGridView:unitTileView所在的unitGridView
 *  unitTileView:触发的手势所在的unitTileView
 *@Return:unitTileView对应的时间范围内的事件
 **************************************************************/
- (NSArray *)unitGridView:(JBUnitGridView *)unitGridView eventsOfUnitTileView:(JBUnitTileView *)unitTileView;

@end